﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DTO;
using AutoMapper;
using System.Transactions;

namespace DAO
{
    public class ChucVuDAO
    {
        public static List<ChucVuDTO> DocDanhSach()
        {
            //tạo list
            List<ChucVuDTO> list = new List<ChucVuDTO>();

            //khởi tạo datacontext
            QuanLyThuVienDataContext context = new QuanLyThuVienDataContext();
            var ds = from n in context.ChucVus
                     select n;

            //duyệt danh sách
            foreach (ChucVu n in ds)
            {
                //mapping từ linQ vào dto
                ChucVuDTO dto = new ChucVuDTO();
                Mapper.CreateMap<ChucVu, ChucVuDTO>();
                dto = Mapper.Map<ChucVu, ChucVuDTO>(n);
                //thêm vào list
                list.Add(dto);
            }

            //trả về kq
            return list;
        }

        public static bool Them(ChucVuDTO dto)
        {
            using (TransactionScope scope = new TransactionScope())
            {
                //khởi tạo datacontext
                QuanLyThuVienDataContext context = new QuanLyThuVienDataContext();

                //tạo đối tượng
                ChucVu ChucVu = new ChucVu();

                //mapping
                Mapper.CreateMap<ChucVuDTO, ChucVu>();
                ChucVu = Mapper.Map<ChucVuDTO, ChucVu>(dto);

                //thêm vào ds khi nhấn submit
                context.ChucVus.InsertOnSubmit(ChucVu);

                //thực hiện thay đổi
                context.SubmitChanges();

                //Đọc dòng vừa ghi để lưu lại mã lên trên
                dto.MaChucVu = ChucVu.MaChucVu;

                //transaction thành công
                scope.Complete();
            }
            return true;
        }

        public static bool Xoa(ChucVuDTO dto)
        {
            using (TransactionScope scope = new TransactionScope())
            {
                //khởi tạo datacontext
                QuanLyThuVienDataContext context = new QuanLyThuVienDataContext();

                //Lấy dữ liệu phù hợp với dto
                ChucVu ChucVu = context.ChucVus.Single(c => c.MaChucVu == dto.MaChucVu);

                //Xóa
                context.ChucVus.DeleteOnSubmit(ChucVu);

                //thực hiện thay đổi
                context.SubmitChanges();

                //transaction thành công
                scope.Complete();
            }
            return true;
        }

        public static bool CapNhat(ChucVuDTO dto)
        {
            using (TransactionScope scope = new TransactionScope())
            {
                //khởi tạo datacontext
                QuanLyThuVienDataContext context = new QuanLyThuVienDataContext();

                //Lấy dữ liệu phù hợp với dto
                ChucVu ChucVu = context.ChucVus.Single(c => c.MaChucVu == dto.MaChucVu);
                ChucVu.TenChucVu = dto.TenChucVu;

                //thực hiện thay đổi
                context.SubmitChanges();

                //transaction thành công
                scope.Complete();
            }
            return true;
        }
    }
}
